/**
 * 初始化快捷键功能
 * @param editor 编辑器实例
 * @param isApple 是否为苹果系统
 */
export default function initShortcuts(editor: any, isApple: boolean): void {
  // 检查editor是否有效
  if (!editor || typeof editor !== 'object') {
    return
  }

  // 尝试使用不同的方式注册快捷键，避免registerShortcuts方法不存在的问题
  try {
    // 直接绑定全局键盘事件监听，并使用capture模式捕获事件，优先于浏览器默认行为
    document.addEventListener(
      'keydown',
      function (event) {
        // 判断是否按下了控制键
        const isControlPressed = isApple ? event.metaKey : event.ctrlKey

        if (isControlPressed) {
          // 阻止事件冒泡和默认行为
          const preventBrowserDefault = () => {
            event.preventDefault()
            event.stopPropagation()
            event.stopImmediatePropagation()
          }

          switch (event.key.toLowerCase()) {
            case 'p':
              preventBrowserDefault()
              console.log('print')
              // 调用editor的打印命令而不是直接window.print()
              if (editor.command && typeof editor.command.executePrint === 'function') {
                editor.command.executePrint()
              } else {
                window.print()
              }
              break
            case 'f':
              preventBrowserDefault()
              console.log('search')
              // 使用正确的选择器来触发搜索功能
              {
                const searchBtn = document.querySelector<HTMLDivElement>('.menu-item__search')
                if (searchBtn) {
                  searchBtn.click()
                } else {
                  console.warn('搜索按钮未找到')
                }
              }
              break
            case '+':
            case '=':
              preventBrowserDefault()
              if (editor.command && typeof editor.command.executePageScaleAdd === 'function') {
                editor.command.executePageScaleAdd()
              }
              break
            case '-':
              preventBrowserDefault()
              if (editor.command && typeof editor.command.executePageScaleMinus === 'function') {
                editor.command.executePageScaleMinus()
              }
              break
            case '0':
              preventBrowserDefault()
              if (editor.command && typeof editor.command.executePageScaleRecovery === 'function') {
                editor.command.executePageScaleRecovery()
              }
              break
          }
        }
      },
      true
    ) // 使用capture模式优先捕获事件
  } catch (error) {
    console.warn('初始化快捷键失败:', error)
  }
}
